﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AccesoDatos.Objetos;
using AccesoDatos.Manejador;
using Autorizacion_facturas_caja.Vacaciones;

namespace Autorizacion_facturas_caja
{
    public partial class frmVacaciones_Busqueda_Programadas : Form
    {
        objRH obj = new objRH();
        objVacaciones obj1 = new objVacaciones();
        Manejador_Empleado_Captura Mane = new Manejador_Empleado_Captura();
        Manejador_Vacaciones MV = new Manejador_Vacaciones();

        #region FUNCIONES
        //realiza la busqueda
        private void buscar()
        {
            if (cmbTipo.Text == "VAC PROGRAMADAS")
            {
                obj.Buscar = txtBuscar.Text.Trim();
                dataGridView1.DataSource = MV.ListaVacacionesProgramadas(obj.Buscar, cmbSucursal.SelectedValue.ToString());
                propiedadesColumnas();
            }
            else if (cmbTipo.Text == "PAGO DE DIAS")
            {
                obj.Buscar = txtBuscar.Text.Trim();
                dataGridView1.DataSource = MV.ListaCursandoVac(obj.Buscar, cmbSucursal.SelectedValue.ToString(), "PAGANDO");
                propiedadesColumnas();
            }
            else { MessageBox.Show("SELECCIONE ALGUN TIPO PARA LA BUSQUEDA", "ALERTA"); }
        }

        //Obtiene los datos de la tabla cat_sucursales al combo de sucursales
        private void ObtieneDatosCombo()
        {
            cmbSucursal.DataSource = Mane.ObtieneSucursales();
            cmbSucursal.ValueMember = "SucId";
            cmbSucursal.DisplayMember = "Nombre";
        }

        //Propiedades de las columnas
        private void propiedadesColumnas()
        {
            this.dataGridView1.RowHeadersVisible = false;

            /*Esconde las columnas*/
            this.dataGridView1.Columns["id_empleado"].Visible = false;
            this.dataGridView1.Columns["id_sucursal"].Visible = false;
            this.dataGridView1.Columns["fecha_ingreso"].Visible = false;
            this.dataGridView1.Columns["id_jefe"].Visible = false;
            this.dataGridView1.Columns["cuenta_banco"].Visible = false;
            this.dataGridView1.Columns["estatus"].Visible = false;
            this.dataGridView1.Columns["nombre"].Visible = false;
            this.dataGridView1.Columns["apellidos"].Visible = false;
            if (cmbTipo.Text == "VAC PROGRAMADAS")
            {
                this.dataGridView1.Columns["id_Relacion_Vacaciones"].Visible = false;
                this.dataGridView1.Columns["id_Vacaciones"].Visible = false;
                this.dataGridView1.Columns["id_vacacion_padre"].Visible = false;
                this.dataGridView1.Columns["fecha_solicitud"].Visible = false;
                this.dataGridView1.Columns["id_aprobador"].Visible = false;
                this.dataGridView1.Columns["id_suplente"].Visible = false;
                this.dataGridView1.Columns["id_empresa"].Visible = false;
                this.dataGridView1.Columns["id_departamento"].Visible = false;
                this.dataGridView1.Columns["completado"].Visible = false;
                this.dataGridView1.Columns["comentario"].Visible = false;
                this.dataGridView1.Columns["estatus1"].Visible = false;
                this.dataGridView1.Columns["Dias_Programados"].Visible = false;

                this.dataGridView1.Columns["fecha_inicio"].HeaderText = "FECHA INICIO";
                this.dataGridView1.Columns["fecha_fin"].HeaderText = "FECHA FIN";
                this.dataGridView1.Columns["dias_solicitados"].HeaderText = "DÍAS SOLICITADOS";
                this.dataGridView1.Columns["autorizacion"].HeaderText = "AUTORIZADA";
                this.dataGridView1.Columns["dias_programados"].HeaderText = "DÍAS PROGRAMADOS";
                this.dataGridView1.Columns["fecha_inicio"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                this.dataGridView1.Columns["fecha_fin"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                this.dataGridView1.Columns["dias_solicitados"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                this.dataGridView1.Columns["autorizacion"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;

                this.dataGridView1.Columns["fecha_inicio"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                this.dataGridView1.Columns["fecha_fin"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                this.dataGridView1.Columns["dias_solicitados"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                this.dataGridView1.Columns["autorizacion"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                this.dataGridView1.Columns["dias_programados"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                this.dataGridView1.Columns["dias_solicitados"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                this.dataGridView1.Columns["Dias_Programados"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                this.dataGridView1.Columns["autorizacion"].DisplayIndex = 0;
            }
            else if (cmbTipo.Text == "PAGO DE DIAS")
            {
                this.dataGridView1.Columns["id_departamento"].Visible = false;
                this.dataGridView1.Columns["id_empresa"].Visible = false;
                this.dataGridView1.Columns["Dias_Programados"].Visible = false;
                this.dataGridView1.Columns["Antiguedad"].Visible = false;
                this.dataGridView1.Columns["Dias_Correspondientes"].Visible = false;
                this.dataGridView1.Columns["Dias_Disfrutados"].Visible = false;
                this.dataGridView1.Columns["Monto_Prima"].Visible = false;
                this.dataGridView1.Columns["autorizado"].Visible = false;
                this.dataGridView1.Columns["Estatus"].Visible = false;
                this.dataGridView1.Columns["Estatus1"].Visible = false;
                this.dataGridView1.Columns["Dias_Restantes"].Visible = false;
                this.dataGridView1.Columns["Dias_Acomulados"].Visible = false;
                this.dataGridView1.Columns["Referencia"].Visible = false;
                this.dataGridView1.Columns["Ciclo"].Visible = false;
                this.dataGridView1.Columns["Periodo"].Visible = false;
                this.dataGridView1.Columns["Monto_Dias_Acomulados"].Visible = false;
                this.dataGridView1.Columns["Fecha_Alta"].Visible = false;
                this.dataGridView1.Columns["Monto_Dias_Pagados"].Visible = false;
                this.dataGridView1.Columns["Dias_Pagados"].Visible = false;
                this.dataGridView1.Columns["id_Vacaciones_Pago"].Visible = false;
                this.dataGridView1.Columns["Id_Vacaciones"].Visible = false;
                this.dataGridView1.Columns["Fecha_Pago"].HeaderText = "FECHA DE REGISTRO";
                this.dataGridView1.Columns["Fecha_Pago"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                this.dataGridView1.Columns["Fecha_Pago"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                this.dataGridView1.Columns["Dias_Pagar"].HeaderText = "DÍAS A PAGAR";
                this.dataGridView1.Columns["Dias_Pagar"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                this.dataGridView1.Columns["Dias_Pagar"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                this.dataGridView1.Columns["Monto_Diario"].Visible = false;
                this.dataGridView1.Columns["Monto_Total"].HeaderText = "MONTO TOTAL";
                this.dataGridView1.Columns["Monto_Total"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                this.dataGridView1.Columns["Monto_Total"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                this.dataGridView1.Columns["Comentario"].Visible = false;
                this.dataGridView1.Columns["Estatus_Autorizado"].Visible = false;
                this.dataGridView1.Columns["Estatus2"].Visible = false;
                this.dataGridView1.Columns["id_jefe"].Visible = false;
                this.dataGridView1.Columns["fecha_Autorizacion"].Visible = false;
                this.dataGridView1.Columns["Id_Empleado1"].Visible = false;
                this.dataGridView1.Columns["Id_Vacaciones1"].Visible = false;
                this.dataGridView1.Columns["Tipo_Dias"].HeaderText = "DÍAS";
                this.dataGridView1.Columns["Tipo_Dias"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                this.dataGridView1.Columns["Tipo_Dias"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            }
            //Renombra columnas
            this.dataGridView1.Columns["Nombre_apellidos"].HeaderText = "EMPLEADO";
            this.dataGridView1.Columns["Nombre_apellidos"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            this.dataGridView1.Columns["departamento"].HeaderText = "DEPARTAMENTO";
            this.dataGridView1.Columns["departamento"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            this.dataGridView1.Columns["puesto"].HeaderText = "PUESTO";
            this.dataGridView1.Columns["puesto"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            this.dataGridView1.Columns["Nombre_apellidos"].DisplayIndex = 1;
            this.dataGridView1.Columns["departamento"].DisplayIndex = 2;
            this.dataGridView1.Columns["puesto"].DisplayIndex = 3;
        }


        //obtiene los objetos de la liena seleccionada 
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex != 0 && e.RowIndex >= 0 && cmbTipo.Text == "VAC PROGRAMADAS")
            {
                obj.Id_Empleado = Convert.ToInt32(dataGridView1[0, e.RowIndex].Value);
                obj.SucId = dataGridView1[1, e.RowIndex].Value.ToString();
                obj.IdJefe = Convert.ToInt32(dataGridView1[2, e.RowIndex].Value);
                obj.Nombre = dataGridView1[3, e.RowIndex].Value.ToString();
                obj.Apellidos = dataGridView1[4, e.RowIndex].Value.ToString();
                obj.Puesto = dataGridView1[5, e.RowIndex].Value.ToString();
                obj.FechaIngreso = Convert.ToDateTime(dataGridView1[6, e.RowIndex].Value);
                obj.Departamento = dataGridView1[7, e.RowIndex].Value.ToString();
                obj.Cuenta_Banco = dataGridView1[8, e.RowIndex].Value.ToString();
                obj.Estatus = Convert.ToInt32(dataGridView1[9, e.RowIndex].Value);
                obj.Nombre_empresa = dataGridView1[10, e.RowIndex].Value.ToString();
                obj1.Id_Relacion_Vacaciones = Convert.ToInt32(dataGridView1[11, e.RowIndex].Value);
                obj1.Id_Vacaciones = Convert.ToInt32(dataGridView1[12, e.RowIndex].Value);
                obj1.Fecha_Solicitud = Convert.ToDateTime(dataGridView1[14, e.RowIndex].Value);
                obj1.Fecha_Inicio_Vacaciones = Convert.ToDateTime(dataGridView1[15, e.RowIndex].Value);
                obj1.Fecha_fin_vacaciones = Convert.ToDateTime(dataGridView1[16, e.RowIndex].Value);
                obj1.Id_Aprobador = Convert.ToInt32(dataGridView1[17, e.RowIndex].Value);
                obj1.Id_Suplente = Convert.ToInt32(dataGridView1[18, e.RowIndex].Value);
                obj1.Autorizacion = Convert.ToBoolean(dataGridView1[19, e.RowIndex].Value);
                obj1.Dias_Solicitados = Convert.ToInt32(dataGridView1[20, e.RowIndex].Value);
                obj1.Completado = dataGridView1[21, e.RowIndex].Value.ToString();
                obj1.Comentario = dataGridView1[22, e.RowIndex].Value.ToString();
                obj1.Dias_Programados = Convert.ToInt32(dataGridView1[24, e.RowIndex].Value);
                frmVacaciones_Completar fcv = new frmVacaciones_Completar(obj, obj1, 1);
                fcv.ShowDialog();

                if (cmbTipo.Text == "VAC PROGRAMADAS")
                {
                    obj.Buscar = txtBuscar.Text.Trim();
                    dataGridView1.DataSource = MV.ListaVacacionesProgramadas(obj.Buscar, cmbSucursal.SelectedValue.ToString());
                    propiedadesColumnas();
                }
                else if (cmbTipo.Text == "PAGO DE DIAS")
                {
                    obj.Buscar = txtBuscar.Text.Trim();
                    dataGridView1.DataSource = MV.ListaCursandoVac(obj.Buscar, cmbSucursal.SelectedValue.ToString(), "PAGANDO");
                    propiedadesColumnas();
                }
                else { MessageBox.Show("SELECCIONE ALGUN TIPO PARA LA BUSQUEDA", "ALERTA"); }

            }
            else if (e.ColumnIndex != 0 && e.RowIndex >= 0 && cmbTipo.Text == "PAGO DE DIAS")
            {
                obj.Id_Empleado = Convert.ToInt32(dataGridView1[0, e.RowIndex].Value);
                obj.SucId = dataGridView1[1, e.RowIndex].Value.ToString();
                obj.IdJefe = Convert.ToInt32(dataGridView1[2, e.RowIndex].Value);
                obj.Nombre = dataGridView1[3, e.RowIndex].Value.ToString();
                obj.Apellidos = dataGridView1[4, e.RowIndex].Value.ToString();
                obj.Puesto = dataGridView1[5, e.RowIndex].Value.ToString();
                obj.FechaIngreso = Convert.ToDateTime(dataGridView1[6, e.RowIndex].Value);
                obj.Departamento = dataGridView1[7, e.RowIndex].Value.ToString();
                obj.Cuenta_Banco = dataGridView1[8, e.RowIndex].Value.ToString();
                obj.Estatus = Convert.ToInt32(dataGridView1[9, e.RowIndex].Value);
                obj.Nombre_empresa = dataGridView1[10, e.RowIndex].Value.ToString();
                obj1.Id_Vacaciones = Convert.ToInt32(dataGridView1[11, e.RowIndex].Value);
                obj1.Antigüedad = Convert.ToInt32(dataGridView1[13, e.RowIndex].Value);
                obj1.Dias_Correspondientes = Convert.ToInt32(dataGridView1[14, e.RowIndex].Value);
                obj1.Dias_Disfrutados = Convert.ToInt32(dataGridView1[15, e.RowIndex].Value);
                obj1.Prima_Vacacional = (dataGridView1[16, e.RowIndex].Value.ToString());
                obj1.Prima_Pagada = (dataGridView1[17, e.RowIndex].Value.ToString());
                obj1.Dias_Restantes = Convert.ToInt32(dataGridView1[19, e.RowIndex].Value);
                obj1.Dias_Programados = Convert.ToInt32(dataGridView1[20, e.RowIndex].Value);
                obj1.Dias_Acomulados = Convert.ToInt32(dataGridView1[21, e.RowIndex].Value);
                obj1.Referencia = (dataGridView1[22, e.RowIndex].Value.ToString());
                obj1.Periodo = Convert.ToInt32(dataGridView1[24, e.RowIndex].Value);
                obj1.Id_Vacaciones_Pago = Convert.ToInt32(dataGridView1[29, e.RowIndex].Value);
                obj1.Fecha_Pago = Convert.ToDateTime(dataGridView1[31, e.RowIndex].Value);
                obj1.Dias_Pagar = Convert.ToInt16(dataGridView1[32, e.RowIndex].Value);
                obj1.Monto_Dia = dataGridView1[33, e.RowIndex].Value.ToString();
                obj1.Monto_Total = (dataGridView1[34, e.RowIndex].Value.ToString());
                obj1.Justificacion = (dataGridView1[35, e.RowIndex].Value.ToString());
                obj1.Tipo_Dias = (dataGridView1[38, e.RowIndex].Value.ToString());

                frmVacaciones_Cancelar_Dias fcd = new frmVacaciones_Cancelar_Dias(obj, obj1, 3);
                fcd.ShowDialog();

                buscar();
            }
        }
        #endregion

        #region BOTONES
        //llama metodo buscar
        private void btnBuscar_Click(object sender, EventArgs e)
        {
            buscar();
        }

        //cierra la forma
        private void btnRegresar_Click(object sender, EventArgs e)
        {
            Close();
        }
        #endregion

        #region  EVENTOS
        //llama metodo para obtener datos 
        public frmVacaciones_Busqueda_Programadas()
        {
            InitializeComponent();
            obj.Buscar = txtBuscar.Text.Trim();
            ObtieneDatosCombo();
        }


        //Aigna tips a botones
        private void frmVacaciones_Busqueda_Programadas_Load(object sender, EventArgs e)
        {
            toolTip1.SetToolTip(btnBuscar, "BUSCAR");
            toolTip1.SetToolTip(btnRegresar, "REGRESAR");
        }

        //llama al metodo buscar
        private void txtBuscar_TextChanged(object sender, EventArgs e)
        {
            buscar();
        }
        #endregion
        
    }
}
